package cn.com.manager.listener;

import org.apache.shiro.session.Session;
import org.apache.shiro.session.mgt.eis.CachingSessionDAO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.Serializable;

/**
 * Created by Administrator on 2016/4/13.
 * doCreate/doUpdate/doDelete/doReadSession分别代表创建/修改/删除/读取会话
 */
public class MySessionDao extends CachingSessionDAO{
    private static final Logger logger = LoggerFactory.getLogger(MySessionDao.class);
    @Override
    protected void doUpdate(Session session) {

    }

    @Override
    protected void doDelete(Session session) {
        logger.debug("Class----<<{}>>,Info----<<监听会话删除，sessionId={}>>",MySessionDao.class.getName(),session.getId());
    }

    @Override
    protected Serializable doCreate(Session session) {
        Serializable sessionId = generateSessionId(session);
        assignSessionId(session, sessionId);
        logger.debug("Class----<<{}>>,Info----<<监听会话创建，sessionId={}>>",MySessionDao.class.getName(),sessionId);
        return sessionId;
    }

    @Override
    protected Session doReadSession(Serializable sessionId) {
        //默认会从缓存中读取，若缓存中不存在，则会调用该方法获取会话
        Session cachedSession = getCachedSession(sessionId);
        logger.debug("Class----<<{}>>,Info----<<监听会话读取，sessionId={}>>",MySessionDao.class.getName(),sessionId);
        return cachedSession;
    }
}
